【運用】CloudTrailで取得した監査ログをElasticSearch Serviceで活用する【簡単設定】
地味サービス大好きっ子の森永です。
CloudTrailのログ、活用できてますか。
私はできていません。
「活用しないログはただのログだ、いや、ただのコストだ」
昔の偉い人は言いました。(言ってません)
re:Inventの直前にElasticSearch Serviceが発表されました。
これだ。これが道だ。
ということで、無駄にためていたCloudTrailの監査ログをElasticSearch Serviceで活用できるようにするまでをまとめてみました。
構成
こんな感じです。
まずは、CloudTrailのログをCloudWatch Logsに流し込みます。
そんでもってCloudWatch Logsに流し込まれたログをLambdaを使ってElasticSearch Serviceへ流し込みます。
いやーめんどくさそうですねー
Lambdaが出てきたあたりで諦めたくなった人もいらっしゃるかもしれません。
が!これめっちゃ簡単にできるんです!
早速やっていきましょう。
CloudTrailからCloudWatchLogsへ
CloudTrailにはCloudWatch Logsへログを流す機能が実はあるんです。
こちらの記事で使ってます。
CloudTrail管理画面の左ペインで「Configuration」を選択し、CloudTrailの設定画面を開きます。
「CloudWatch Logs」→「Configure」ボタンを押します。
「New or existing log group」にCloudWatch LogsのLog group名を指定します。
こちらは存在するものでもしないものでも構いません。(存在しなかったら新規に作成されます。)
「Continue」を押すとIAM Role作成画面に移ります。
こちらデフォルトのまま「Allow」でOKです。
これを設定するとCloudWatch Logsにログが流れ込みます。
はい、第一段階終了です。
CloudWatchLogsからElasticSearch Serviceへ
次にCloudWatchLogsからElasticSearch Serviceへログを流す設定をします。
ひとまず、こちらを参考にElasticSearchを構築して下さい。
構築できたらCloudWatch Logsの画面で先ほどCloudTrailのログを流しこんだLog groupを選択して、「Actions」→「Start Streaming to Amazon ElasticSearch Service」を選択します。
「Amazon ES cluster」で構築したElasticSearchを選択します。
「Lambda IAM Execution Role」でLambda用のIAMを設定します。
こちらについてもデフォルト設定で新規作成いただいて構いません。
「Log Format」で「AWS CloudTrail」を選択するだけでCloudTrailの形式に合わせて流し込んでくれます。
以上で2段階も終了です。なんて簡単なんだ!!!
Successの画面が出たら、Kibana3などへのリンクが出てきます。
Kibana3のダッシュボードテンプレートが用意されていますので使ってみましょう。
kibanaで活用してみる
kibana3
CloudTrail用のテンプレートをダウンロードしておきます。
Kibana3のリンクに飛び、右上のフォルダアイコン→「Advanced」→「Local File」でテンプレートファイルを選択します。
そうすると以下の様なダッシュボードが完成します。
設定したばっかであまり何もないですが、一瞬でこんなのが出てきます。
kibana4
kibana4でもログを見てみましょう。
Indexを指定しなければいけませんが、「cwl-*」のように指定しましょう。
kibana4の詳しい使い方は今回はしませんが、全てのAPIの呼び出し数をグラフで表示したり、アクセス元のSource IPを多い順に表示することも可能です。
勿論、検索して、欲しい情報を抜き出すことも出来ます!
これで何かあった時に調査する事ができますね!
最後に
いやー本当に簡単に設定することができました。
今回はCloudTrailのログを流しましたが、VPC Flow Logsなども流しこむことが出来ますので、全てのログをElasticSearch Serviceで活用する事ができますね。
kibana勉強します。